/*
    小明想要在王者荣耀游戏里晋升一个段位，
    假设他一共需打了n场比赛，
    且必须成功赢得至少70%的场次才能成功晋升。
    假设每场比赛小明获胜的概率分别为p1，p2，…，pn，
    请帮他算出成功晋级段位的概率是多少？
*输入：
	参数1：整数num（0  num  1000），表示比赛的场数。
    参数2：整数数组p[num] = {p1，p2，…，pnum}，
        其中pi表示小明有pi%的概率赢得第i场比赛。（0  pi  100）
*输出：
    成功晋级段位的概率，保留小数点后5位，最后结果四舍五入。
*/

#include<iostream>
#include <iomanip>  // 用于setprecision和fixed  
#include <cmath>     // 用于round  

using namespace std;
class Solution{
public:
    //num场,p[]胜率
    double solve(int num,int * p);

    /*向dp写入前i场赢j次的概率
    *   win[0,0]为前0场赢0次的概率
    *   win[1,1]为前1场赢1次的概率
    */
    void win(int i,int j, int p_i);

    /*前i场赢j次的概率
    *   dp[0,0]为前0场赢0次的概率
    *   dp[1,1]为前1场赢1次的概率
    */
    static double dp[1000][1000] ;

    ~Solution();
};
Solution::~Solution(){

    // 遍历并打印数组  
    for (int i = 0; i < 5; i++) {  
        for (int j = 0; j < 5; j++) {  
            std::cout <<" dp["<<i<<"]["<<j<<"] is" <<dp[i][j]<< " ";  
        }  
        std::cout << "\n";  
    }  
}

double Solution::dp[1000][1000] = {0};
/**
 * @brief 初始化(给第一行赋值)自底向上推导dp数组
 * @param num 比赛场数
*/
double Solution::solve(int num,int * p){
    if( !num)
    {
        return 1 ;
    }
    /**
     * @brief 
     * @param i 前i场
     * @param j 胜j场
     * @param p[i] 第i+1场概率 p[0]==p1==第一场胜场概率
     */
    for (size_t i = 0; i <= num; i++)
    {
        for (size_t j = 0; j <= num; j++)
        {
            if(i){
                win(i,j,p[i-1]);
            }
            else{
                win(i,j,0);
            }
        }
        
    }
    
    
    //获得dp[num][num*0.7],即前num场获胜至少num*0.7次的概率
    double a = 0.0;
    for(size_t i =static_cast<int>(num*0.7 + 0.5);i<=num;i++)
    {a+=dp[num][i];}
    return a;
}
/**
 * @brief win(i,j,p_j)赋值dp[i][j]
 * @param i 前i场, 
 * @param j 胜j次, 
 * @param p_i 第j场胜概率为 p_i
 * @return void 
*/
void Solution::win(int i,int j,int p_i){
     if (j > i) {  
        // j > i, 胜场大于参与场  
        dp[i][j] = 0;  
    } else if (i == 0 && j == 0) {  
        // 前0场获胜0次  
        dp[i][j] = 1; 
    } else if (i == 1 && j == 0) {  
        // 前1场获胜0次  
        dp[i][j] = (100 - p_i) / 100.0;  
    } else if (i == 1 && j == 1) {  
        // 前1场获胜1次  
        dp[i][j] = p_i / 100.0;  
    } else if (j > 0) {  
        dp[i][j] = dp[i - 1][j] * (100 - p_i) / 100.0 + dp[i - 1][j - 1] * p_i / 100.0;  
    } else if (j == 0) {  
        dp[i][j] = dp[i - 1][j] * (100 - p_i) / 100.0;  
    }  
    
    
}

int main(){
    auto s = new Solution();
    int sum = 0;
    std::cin>>sum;
    int* p1 = new int[sum];
    for (size_t i = 0; i < sum; i++)
    {
        std::cin>>p1[i];
    }
    
    double result1 = s->solve(4,p1);

    double rounded_result1 = std::round(result1 * 100000) / 100000;
    
    std::cout << std::fixed << std::setprecision(5) <<rounded_result1 << std::endl;
}
 